package com.atguigu.gmall.seckill.task;

import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.List;

/**
 * xxl job的使用步骤：
 * 1、部署调度中心
 * 2、开发执行器(XxlJobSpringExecutor)
 * 3、在调度中心添加任务，并且指定任务的处理器名称
 * 4、开发任务逻辑代码，在任务方法上添加@XxlJob指定任务的处理器名
 */
@Component
@Slf4j
public class XxlJobTask {

    // @XxlJob(value = "task01")
    public void task01() {

        // 从数据库中查询出要处理的数据的id
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);

        // 获取分片的数量
        int shardTotal = XxlJobHelper.getShardTotal();

        // 获取当前分片的索引
        int shardIndex = XxlJobHelper.getShardIndex();

        // 遍历list集合
        for(Integer id : list) {
            int result = id % shardTotal ;
            if(result == shardIndex) {
                log.info("该数据被处理了，数据的id为：{}" ,  id);
            }
        }

    }

}
